<?php
session_start();

//connection bdd
include_once('accessoires/connect_bdd.php');
//inclure le fichier des fonctions
include_once('accessoires/functions_connect.php');

/*on recupere les données de l'utilisateur*/
$id=$_SESSION['id_user'];
$sql="SELECT pseudo,civility,lastname,firstname,email,avatars FROM users WHERE id_user= :id_user;";
$query=$connect->prepare($sql);
$query->bindParam(':id_user',$id,PDO::PARAM_STR,35);
$query->execute();
$data=$query->fetch(PDO::FETCH_ASSOC);
$pseudo_user_data=$data['pseudo'];
$civility_user=$data['civility'];
$lastname_user_data=$data['lastname'];
$firstname_user_data=$data['firstname'];
$email_user_data=$data['email'];
$avatar=$data['avatars'];

/*si l'utilisateur modifie ses données*/
if(isset($_POST['modifier']))
{
	$pseudo_user=htmlentities(trim($_POST['pseudo_user']));
	$lastname_user=htmlentities(trim($_POST['lastname_user']));
	$firstname_user=htmlentities(trim($_POST['firstname_user']));
	$civility_user=htmlentities(trim($_POST['civility_user']));
	$email_user=htmlentities(trim($_POST['email_user']));

	//on vérifie si tout est remplis
	if(empty($pseudo_user))
	{
		$errors[1] = "Veuillez saisir un nom d'utilisateur";
	}
	if(empty($lastname_user))
	{
		$errors[2] = "Veuillez saisir votre nom";
	}
	if(empty($firstname_user))
	{
		$errors[3] = "Veuillez saisir votre prénom";
	}
	if(empty($email_user))
	{
		$errors[4] = "Veuillez saisir votre email";
	}

	//verifions la taille des chaines
	$string=35;
	if(strlen($_POST["pseudo_user"]) >= $string)
	{
		$errors[5] = "Votre pseudo ne doit pas dépasser <b>".$string." caractères</b>";
	}
	if(strlen($_POST["lastname_user"]) >= $string)
	{
		$errors[6] = "Votre pseudo ne doit pas dépasser <b>".$string." caractères</b>";
	}
	if(strlen($_POST["firstname_user"]) >= $string)
	{
		$errors[7] = "Votre pseudo ne doit pas dépasser <b>".$string." caractères</b>";
	}

	//verifions si l'email est valide
	if (!filter_var($email_user, FILTER_VALIDATE_EMAIL))
	{
		$errors[8] = "Ceci n'est pas une adresse mail valide";
	}

	//vérifions si le pseudo éxiste et qu'il n'est pas egal a l'actuelle de l'utilisateur
	if($pseudo_user!=$pseudo_user_data && verif_pseudo_existe($pseudo_user)!=0)
	{
		$errors[9] = "Le pseudo <b><i>".$pseudo_user."</i></b> n'est pas disponible";
	}

	//verifions si l'email existe
	if($email_user!=$email_user_data && verif_email_existe($email_user)!=0)
	{
		$errors[10] = "L'adresse <b><i>".$email_user."</i></b> éxiste déjà";
	}

	//vérifions s'il ya des caracteres speciaux dans le champs pseudo
	if(preg_match('/[^0-9A-Za-zàâçéèêëîïôûùüÿñæœ_]/',html_entity_decode($pseudo_user)))
	{
		$errors[11] = "Veuillez insérer que des lettres ou chiffres dans votre pseudo.";
	}

	//verifions s'il y a des caractères autres que word
	if(preg_match('/[^A-Za-zàâçéèêëîïôûùüÿñæœ ]/',html_entity_decode($lastname_user)))
	{
		$errors[12] = "Veuillez insérer que des lettres dans votre nom.";
	}
	if(preg_match('/[^A-Za-zàâçéèêëîïôûùüÿñæœ ]/', html_entity_decode($firstname_user)))
	{
		$errors[13] = "Veuillez insérer que des lettres dans votre prénom.";
	}

	//avatar
	$dossier = 'images/avatars/';
	$fichier = basename($_FILES['avatar']['name']);
	$taille_maxi = 100000;
	$taille = filesize($_FILES['avatar']['tmp_name']);
	$extensions = array('.png', '.gif', '.jpg', '.jpeg');
	$extension = strrchr($_FILES['avatar']['name'], '.');

	//si image vide
	if(empty($fichier))
	{
		$fichier=$avatar;
	}
	else
	{
		//Début des vérifications de sécurité...
		if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
		{
			$errors_av[0] = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg';
		}
		if($taille>$taille_maxi)
		{
			$errors_av[1] = 'Le fichier est est supérieur à <b>10 Mo</b>';
		}
		if(empty($errors_av)) //S'il n'y a pas d'erreur, on upload
		{
			//On formate le nom du fichier ici...
			function wd_remove_accents($str, $charset='utf-8')
			{
				$str = htmlentities($str, ENT_NOQUOTES, $charset);

				$str = preg_replace('#&([A-za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
				$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. '&oelig;'
				$str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractères

				return $str;
			}
			$fichier = wd_remove_accents($fichier,$charset='utf-8');
			$fichier=$id.'-'.$fichier;
			move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier); //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
		}
	}

	//si tout est ok
	if(empty($errors) && empty($errors_av))
	{
		$sql=" UPDATE users SET lastname= :lastname_user, firstname= :firstname_user, civility= :civility, email= :email_user, pseudo= :pseudo_user, avatars= :avatar
		WHERE id_user= :id_user";
		$query=$connect->prepare($sql);
		$query->bindParam(':pseudo_user',$pseudo_user,PDO::PARAM_STR,$string);
		$query->bindParam(':lastname_user',$lastname_user,PDO::PARAM_STR,$string);
		$query->bindParam(':firstname_user',$firstname_user,PDO::PARAM_STR,$string);
		$query->bindParam(':civility',$civility_user,PDO::PARAM_STR,4);
		$query->bindParam(':email_user',$email_user,PDO::PARAM_STR,320);
		$query->bindParam(':avatar',$fichier,PDO::PARAM_STR,500);
		$query->bindParam(':id_user',$id,PDO::PARAM_STR,$string);
		$query->execute();
		header('location:#');
	}
}
include_once("profil.html");
